iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0

30天什麼時候到.....


建構元

到目前為止,我們所介紹的CWin類別之物件,其資料成員均是在物件建立之後,才由成員函數來設定。很特別的是,C++也可以在建立物件的同時,一併設定他的資料,其方法是利用我們現在要介紹的建構元(constructor)。

建構元的基本認識

在C++裡,建構元所扮演的主要角色是幫助新建立的物件設定初值。建構元可視為一種特殊的函數,它的定義方式與一般的函數類似,其語法如下:

類別名稱(型態1 引數1, 型態2 引數2,...)
{
  程式敘述;
  ....
}

建構元的名稱必須與其所屬之類別名稱完全相同。例如,若要撰寫一個屬於CWin類別的建構元,則建構元名稱也必須是CWin。此外,建構元不能有傳回值,這點也與一般函數不同。

建構元的範例

建構元除了沒有傳回值,且名稱必須與類別相同之外,他的呼叫時機也與一般的函數不同。一般的函數是在需要用到時才呼叫,而建構元則是在建立物件時便會自動呼叫,並執行建構元的內容,因此建構元不須從程式直接呼叫。

因此我們可利用建構元的特性,對物件的資料成員做「初始化」(initialization)的動作。所謂的「初始化」就是設定物件初值的意思。下面的例子說明建構元的使用方式:

//prog13_1,建構元的使用
#include <iostream>
#include <cstdlib>
using namespace std;
class CWin{                         //定義視窗類別CWin
	private:
		char id;
		int width, height;
		
	public:
		CWin(char i,int w,int h){  //CWin()建構元,可接收三個引數 
			id=i;
			width=w;
			height=h;
			cout << "CWin 建構元被呼叫了..." << endl; 
		}
		void show_member(void){   //成員函數,用來顯示資料成員的值 
			cout << "Window " << id << ": ";
			cout << "width=" << width << ", height=" << height << endl; 
		}
};           

int main(void){
	CWin win1('A',50,40);        //宣告win1物件,並設定初值 
	CWin win2('B',60,70);        //宣告win2物件,並設定初值
	
	win1.show_member();
	win2.show_member();
	
	system("pause");
	return 0; 
}

程式的結果如下:
https://ithelp.ithome.com.tw/upload/images/20241007/20169410W2tpxEKBGK.jpg

稍早我們提到,建構元所扮演的主要角色,是幫助新建立的物件設定初值。由本例我們可以看出,在建立物件的同時,便可設定其資料成員的值。因此適當的使用建構元,可有效的化簡程式碼,並增進執行的效率喔!


今天就先到這邊~謝謝大家!


上一篇
Day22 C++ 類別的進階應用與物件導向特性
下一篇
Day24 認識解構元
系列文
用30天學習C++26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言